package models

import (
	"github.com/golang-jwt/jwt/v5"
)

// 用户登录请求结构体
type UserLoginRequest struct {
	// validator 字段说明 https://github.com/go-playground/validator
	Username string `json:"username"  validate:"required,min=3,max=20"` // 用户名，3-20个字符之间，必填
	Password string `json:"password" validate:"required,min=3,max=20"`  // 密码，3-20个字符之间，必填
	//Email    string `json:"email" validate:"email"`                     // 邮箱格式验证
	//Gender   string `json:"gender"    validate:"oneof=male female"`     // 性别验证，只能为 male 或 female

}

// 根据 token 解析生成的用户自定义声明对象
type UserCustomClaims struct {
	// 可根据需要自行添加字段
	*User
	jwt.RegisteredClaims // 内嵌标准的 JWT 声明
}

// /login 接口的返回数据结构体
type UserLoginResponse struct {
	*User
	Token     string `json:"token"`     // JWT Token
	ExpiresAt int64  `json:"expiresAt"` // Token 过期时间，方便前端直接获取
}

// 账户存在性请求结构体
type AccountExistRequest struct {
	Account string `json:"account"` // 账户名
}

// 修改密码请求结构体
type ChangePasswordRequest struct {
	PasswordOld string `json:"passwordOld"` // 旧密码
	PasswordNew string `json:"passwordNew"` // 新密码
}
